Налаштування бази даних
=======================

Ми створили каркас додатка і закінчили зі структурою БД. 
У даному розділі ми створимо саму базу і налаштуємо підключення до неї.

Створення бази даних
--------------------

Для створення бази даних ми використовуємо SQLite. 
Оскільки підтримка баз даних в Yii заснована на [PDO](http://www.php.net/manual/en/book.pdo.php), 
ми можемо легко перемикатися між різними СУБД (наприклад, MySQL, PostgreSQL) 
без необхідності змінювати наш код.

Створимо файл бази даних `blog.db` в директорії `/wwwroot/blog/protected/data`.
І каталог і файл бази даних повинні мати можливість перезапису процесом
Web-сервера, як цього вимагає SQLite.
Ми можемо просто скопіювати файл бази даних з демонстраційною версією блогу із встановленої копії Yii.
Він розташований у директорії `/wwwroot/yii/demos/blog/protected/data/blog.db`.
Щоб створити базу даних вручну, можна виконати SQL-вирази із файлу
`/wwwroot/yii/demos/blog/protected/data/schema.sqlite.sql`.

> Tip|Підказка: Щоб виконати SQL-вирази, необхідно використовувати інструмент
> командного рядка `sqlite3`, який може бути знайдений на
> [офіційному Web-сайті SQLite](http://www.sqlite.org/download.html).


Встановлення підключення до бази даних
--------------------------------------

Щоб використовувати базу даних блогу у нашому додатку, необхідно задати
[конфігурацію додатка](/doc/guide/uk/basics.application#application-configuration),
що знаходиться у PHP-файлі `/wwwroot/blog/protected/config/main.php`.
Код даного файлу повертає асоціативний масив, що містить пари імʼя-значення,
кожна з яких використовується для ініціалізації доступних для запису властивостей
[екземпляра додатка](/doc/guide/uk/basics.application).

Налаштуємо компонент додатка `db` наступним чином:

~~~
[php]
return array(
	…
	'components'=>array(
		…
		'db'=>array(
			'connectionString'=>'sqlite:/wwwroot/blog/protected/data/blog.db',
			'tablePrefix'=>'tbl_',
		),
	),
	…
);
~~~

Конфігурація вище говорить, що
[компонент додатка](/doc/guide/uk/basics.application#application-component)
`db` є екземпляром класу [CDbConnection] із властивістю
`connectionString`, початкове значення якого
`sqlite:/wwwroot/blog/protected/data/blog.db` та властивістю `tablePrefix`
зі значенням `tbl_`.

Тепер ми можемо використовувати підключення до бази даних `Yii::app()->db` 
у будь-якому місці нашого коду. Зауважимо, що вираз
`Yii::app()` повертає екземпляр додатка, який ми створюємо у вхідному сценарії.
За більш детальним описом методів та властивостей підключення до БД, 
можна звернутися до [опису його класу|CDbConnection]. 
Однак, у більшості випадків, підключення до БД використовується не безпосередньо, а через
[ActiveRecord](/doc/guide/uk/database.ar).

Зупинимося докладніше на властивості `tablePrefix`, яку ми використовували під час налаштування.
Дана властивість задає префікс `tbl_` для таблиць БД. 
Тобто, якщо імʼя таблиці у SQL-виразі укладено у подвійні фігурні дужки
(наприклад, `{{post}}`), то компонент `db`, перед тим, як відправити запит СУБД,
перетворює його у імʼя таблиці з префіксом (наприклад, `tbl_post`). 
Дана можливість особливо корисна, якщо у майбутньому ми плануємо змінити префікс таблиць без зміни коду. 
Наприклад, якщо ми розробляємо CMS, ми можемо використовувати дану можливість, 
щоб при установці користувач міг вибрати потрібний йому префікс.

> Tip|Підказка: Якщо ви бажаєте використовувати для зберігання даних замість SQLite
> СУБД MySQL, ви можете створити БД `blog`, використовуючи SQL із файла
> `/wwwroot/yii/demos/blog/protected/data/schema.mysql.sql`. 
> Після цього змініть налаштування додатка наступним чином:
>
> ~~~
> [php]
> return array(
>     …
>     'components'=>array(
>         …
>         'db'=>array(
>             'connectionString' => 'mysql:host=localhost;dbname=blog',
>             'emulatePrepare' => true,
>             'username' => 'root',
>             'password' => '',
>             'charset' => 'utf8',
>             'tablePrefix' => 'tbl_',
>         ),
>     ),
> 	…
> );
> ~~~